<?php
/////////////////////////////////////////////////////////////////////////////
// 
//
// workflow_system 
//
// workflow_copyright
// 
/////////////////////////////////////////////////////////////////////////////

/**
 * FILE_NAME : channel.class.php   FILE_PATH : E:\www\\trunk\classes\application\channel.class.php
 * 频道管理操作类
 *
 * @copyright Copyright (c) 2007 - 2007 www.shopnc.net 
 * @author workflow Develop Team
 * @package 
 * @subpackage 
 * @version Tue Apr 15 09:31:36 CST 2008
 */

defined('Base_Use_Sign') or die("this is invalid system!please contact <a href='http://www.shopnc.net'>www.shopnc.net</>.");

class ChannelClass extends FrameWork {
	/**
	 * 模块列表
	 * @author workflow Develop Team    
	 * @param  
	 * @return array
	 */
	function listChannel($condition,&$obj_page){
		$conditionstr = $this->_conditionSearch($condition);
		$channel_array = $GLOBALS['db']->GetList($conditionstr, $obj_page, "channel");
		return $channel_array;
	}
	
	/**
	 * 构造检索条件
	 * @author workflow Develop Team    
	 * @param  $condition 检索参数，数组形式
	 * @return string
	 */
	function _conditionSearch($condition){
		$condition_str = "";
		
		//ID
		if ($condition['id'] != "") {
			$condition_str .= " and channel_id = '".intval($condition['id'])."' ";
		}
		//不等于该ID
		if ($condition['no_id'] != "") {
			$condition_str .= " and channel_id != '".intval($condition['no_id'])."' ";
		}
		//频道名称
		if ($condition['name'] != "") {
			$condition_str .= " and channel_name = '".$condition['name']."' ";
		}
		//状态
		if ($condition['state'] != "") {
			$condition_str .= " and channel_state = '".$condition['state']."' ";
		}
		//排序
		if ($condition['order_by'] != "") {
			$condition_str .= " order by ".$condition['order_by']." ";
		}
		if ($condition['order_sort'] != "") {
			$condition_str .= " ".$condition['order_sort']." ";
		}
		
		return $condition_str;		
	}
	
	/**
	 * 取制定ID的频道信息
	 * @author workflow Develop Team    
	 * @param  $id
	 * @return array
	 */
	function getChannelById($id){
		if (intval($id) > 0) {
			return $GLOBALS['db']->GetOneRow($id,'channel','channel_id');
		}
		return false;
	}
	
	/**
	 * 新增频道
	 * @author workflow Develop Team    
	 * @param  $param_array 新增模块参数
	 * @return bool
	 */
	function addChannel($param_array){
		if (is_array($param_array)){
			$value_array = array();
			foreach ($param_array as $k => $v){
				if ($v != "") {
					$value_array[$k] = $v;
				}
			}
			return $GLOBALS['db']->InsertRow($value_array, 'channel', 'channel_id');
		}
		return false;
	}
	
	/**
	 * 修改频道
	 * @author workflow Develop Team    
	 * @param  $param_array 新增模块参数
	 * @return bool
	 */
	function updateChannel($param_array){
		$this->getlang("sys_common");
		if (is_array($param_array)){
			$value_array = array();
			foreach ($param_array as $k => $v){
				$value_array[$k] = $v;
			}
			if ($param_array['channel_type'] == 1) { //频道类型为频道跳转链接,清空模块字段
				$value_array['channel_block'] = '';
			}
			if (intval($value_array['channel_id']) > 0){
				return $GLOBALS['db']->UpdateRow(intval($value_array['channel_id']),$value_array, 'channel', 'channel_id');
			}else {
				$err = $this->_lang['langSysCIDErr'];//ID非法
				return $err;
			}
		}
		return false;
	}
	
	/**
	 * 删除频道
	 * @author workflow Develop Team    
	 * @param  $id 频道ID
	 * @return bool
	 */
	function delChannel($id){
		if (intval($id) > 0) {
			$result = $GLOBALS['db']->DeleOneRow(intval($id),'channel','channel_id');
			return $result;
		}else{
			return false;
		}
	}
	
	/**
	 * 将参数信息写入文件
	 * @author workflow Develop Team    
	 * @param  $name 频道名称
	 * @param  $param_array 新增模块参数
	 * @param  $path 文件存放路径
	 * 模块2级参数如果是数组则把数组拼成'|'分割的字符串，3级参数如果为数组则报错
	 * @return bool
	 */
	function createFile($name,$param_array,$path=""){
		$this->getlang("sys_common");
		//将参数整理为一维数组的形式，下标
		if (is_array($param_array)){
			$line = "";
			foreach ($param_array as $k => $v){//$k为模块名称
				$line .= "'".$k."' => \n";
				$line .= "  array ( \n";
				if (is_array($v)){
					foreach ($v as $k2 => $v2){
						if (is_array($v2)){//如果为数组时，则将值拼为一个字符串
							//判断$v2的值是否还是数组，如果是则报错，保证数组必须为字符串有意义
							foreach ($v2 as $k3 => $v3){
								if (is_array($v3)){
									$report = $this->_lang['langSysCParameterIsNumCannotIsArray'];//模块的3级参数必须为数值类型，不能为数组类型
									return $report;
								}
							}
							$v2 = implode('|',$v2);
						}
						$line .= "'".$k2."' => '".$v2."', \n";
					}
				}
				$line .= "  	  ),\n";
			}
		}
		//写入文件
		if ($path == ''){
			$path = BasePath."/share/channelparam";
		}
		$file_name = $path.'/'.$name.".php";//文件名
		//如果该文件已经存在，则返回错误
		if (file_exists($file_name)){
			$report = $this->_lang['langSysCPleaseUseOtherName'];//该频道名已存在，请使用其他名称
			return $report;
		}else {//如果文件夹不存在，则重新建立
			if (!is_dir($path)){
				if (@mkdir($path,0755) === false){
					$report = $this->_lang['langSysCPathCreateIsFaild'];//无法建立，权限不够
					return $report;
				}
			}
		}
		require_once("fileoperate.class.php");
		return FileOperate::makeChannelParamFile($file_name,$line);
	}
	
	/**
	 * 广告模块的参数整理
	 * @author workflow Develop Team   
	 * 参数格式：参数标识：参数值
	 * 参数标识列表：temp_name模块名称，code广告调用代码
	 * 
	 * @param  
	 * @return array
	 */
	function advParamFinish($input_param) {
		$array = array();
		$array = @explode("|||",$input_param);//以"|||"分割字符串
		if (is_array($array)){
			$value_array = array();
			foreach ($array as $k => $v){
				$line = explode(":",$v);//以":"切割参数标识，参数值
				switch ($line[0]){
					case "temp_name"://temp_name,模块名称
						$value_array["temp_name"] = $line[1];
						break;
					case "code"://code，广告调用代码
						$value_array["code"] = $line[1];
						break;
					case "module_new_name"://module_new_name，中文标识
						$value_array["module_new_name"] = $line[1];
						break;
					case "module_type"://module_type，模块类型
						$value_array["module_type"] = $line[1];
						break;
				}
			}
			return $value_array;
		}
		return false;
	}
	
	/**
	 * 投票模块的参数整理
	 * @author workflow Develop Team   
	 * 参数格式：参数标识：参数值
	 * 参数标识列表：temp_name模块名称，
	 *  
	 * @param  $input_param 模块参数
	 * @return array
	 */
	function voteParamFinish($input_param){
		$array = array();
		$array = @explode("|||",$input_param);//以"|||"分割字符串
		if (is_array($array)){
			$value_array = array();
			foreach ($array as $k => $v){
				$line = explode(":",$v);//以":"切割参数标识，参数值
				switch ($line[0]){
					case "temp_name"://temp_name,模块名称
						$value_array["temp_name"] = $line[1];
						break;
					case "select_id"://select_id，投票信息ID
						$value_array["select_id"][] = $line[1];
						break;
					case "module_new_name"://module_new_name，中文标识
						$value_array["module_new_name"] = $line[1];
						break;
					case "module_type"://module_type，模块类型
						$value_array["module_type"] = $line[1];
						break;
				}
			}
			return $value_array;
		}
		return false;
	}
	
	/**
	 * 商品模块的参数整理
	 * @author workflow Develop Team   
	 * 参数格式：参数标识：参数值
	 * 参数标识列表：temp_name模块名称，p_id，商品信息ID,name_num，商品名称字数,sort，商品排序
	 * show_type，商品展现形式
	 * @param  $input_param 模块参数
	 * @return array
	 */
	function productParamFinish($input_param){
		$array = array();
		$array = @explode("|||",$input_param);
		if (is_array($array)){
			$value_array = array();
			foreach ($array as $k => $v){
				$line = explode(":",$v);//以":"切割参数标识，参数值
				switch ($line[0]){
					case "temp_name"://temp_name,模块名称
						$value_array["temp_name"] = $line[1];
						break;
					case "p_id"://p_id，商品信息ID
						$value_array["p_id"][] = $line[1];
						break;
					case "name_num"://name_num，商品名称字数
						$value_array["name_num"] = $line[1];
						break;
					case "sort_value"://sort，商品排序
						$value_array["sort_value"][] = $line[1];
						break;
					case "show_type"://show_type，商品展现形式
						$value_array["show_type"] = $line[1];
						break;
					case "module_new_name"://module_new_name，中文标识
						$value_array["module_new_name"] = $line[1];
						break;
					case "module_type"://module_type，模块类型
						$value_array["module_type"] = $line[1];
						break;
				}
			}
			return $value_array;
		}
		return false;
	}
	
	/**
	 * 商铺模块的参数整理
	 * @author workflow Develop Team   
	 * 参数格式：参数标识：参数值
	 * 参数标识列表：temp_name模块名称，shop_id，商铺信息ID,name_num，商品名称字数
	 *  
	 * @param  $input_param 模块参数
	 * @return array
	 */
	function shopParamFinish($input_param){
		$array = array();
		$array = @explode("|||",$input_param);//以"|||"分割字符串
		if (is_array($array)){
			$value_array = array();
			foreach ($array as $k => $v){
				$line = explode(":",$v);//以":"切割参数标识，参数值
				switch ($line[0]){
					case "temp_name"://temp_name,模块名称
						$value_array["temp_name"] = $line[1];
						break;
					case "name_num"://name_num，商品名称字数
						$value_array["name_num"] = $line[1];
						break;
					case "shop_id"://shop_id，商铺信息ID
						$value_array["shop_id"][] = $line[1];
						break;
					case "sort_value"://sort，商品排序
						$value_array["sort_value"][] = $line[1];
						break;
					case "show_type"://show_type，商品展现形式
						$value_array["show_type"] = $line[1];
						break;
					case "module_new_name"://module_new_name，中文标识
						$value_array["module_new_name"] = $line[1];
						break;
					case "module_type"://module_type，模块类型
						$value_array["module_type"] = $line[1];
						break;
				}
			}
			return $value_array;
		}
		return false;
	}
	
	/**
	 * 商品分类 模块的参数整理
	 * @author workflow Develop Team   
	 * 参数格式：参数标识：参数值
	 * 参数标识列表：temp_name模块名称,name_num，商品名称字数,show_type 展现形式
	 *  check_id，选中的类别ID, sort_value，选中的类别排序序号
	 * @param  $input_param 模块参数
	 * @return array
	 */
	function pclassParamFinish($input_param){
		$array = array();
		$array = @explode("|||",$input_param);//以"|||"分割字符串
		if (is_array($array)){
			$value_array = array();
			foreach ($array as $k => $v){
				$line = explode(":",$v);//以":"切割参数标识，参数值
				switch ($line[0]){
					case "temp_name"://temp_name,模块名称
						$value_array["temp_name"] = $line[1];
						break;
					case "name_num"://name_num，商品名称字数
						$value_array["name_num"] = $line[1];
						break;
					case "show_type"://show_type，展现形式
						$value_array["show_type"] = $line[1];
						break;
					case "check_id"://check_id，选中的类别ID
						$value_array["check_id"][] = $line[1];
						break;
					case "sort_value"://sort_value，选中的类别排序序号
						$value_array["sort_value"][] = $line[1];
						break;
					case "module_new_name"://module_new_name，中文标识
						$value_array["module_new_name"] = $line[1];
						break;
					case "module_type"://module_type，模块类型
						$value_array["module_type"] = $line[1];
						break;
				}
			}
			return $value_array;
		}
		return false;
	}
	
	/**
	 * 商铺分类 模块的参数整理
	 * @author workflow Develop Team   
	 * 参数格式：参数标识：参数值
	 * 参数标识列表：temp_name模块名称,name_num，商品名称字数,show_type 展现形式
	 *  check_id，选中的类别ID, sort_value，选中的类别排序序号
	 * @param  $input_param 模块参数
	 * @return array
	 */
	function shopclassParamFinish($input_param){
		$array = array();
		$array = @explode("|||",$input_param);//以"|||"分割字符串
		if (is_array($array)){
			$value_array = array();
			foreach ($array as $k => $v){
				$line = explode(":",$v);//以":"切割参数标识，参数值
				switch ($line[0]){
					case "temp_name"://temp_name,模块名称
						$value_array["temp_name"] = $line[1];
						break;
					case "name_num"://name_num，商铺类别名称字数
						$value_array["name_num"] = $line[1];
						break;
					case "show_type"://show_type，展现形式
						$value_array["show_type"] = $line[1];
						break;
					case "check_id"://check_id，选中的类别ID
						$value_array["check_id"][] = $line[1];
						break;
					case "sort_value"://sort_value，选中的类别排序序号
						$value_array["sort_value"][] = $line[1];
						break;
					case "module_new_name"://module_new_name，中文标识
						$value_array["module_new_name"] = $line[1];
						break;
					case "module_type"://module_type，模块类型
						$value_array["module_type"] = $line[1];
						break;
				}
			}
			return $value_array;
		}
		return false;
	}
	
	/**
	 * 自定义模块 模块的参数整理
	 * @author workflow Develop Team   
	 * 参数格式：参数标识：参数值
	 * 参数标识列表：temp_name模块名称,
	 * @param  $input_param 模块参数
	 * @return array
	 */
	function customizeParamFinish($input_param){
		$array = array();
		$array = @explode("|||",$input_param);//以"|||"分割字符串
		if (is_array($array)){
			$value_array = array();
			foreach ($array as $k => $v){
				$line = explode(":",$v);//以":"切割参数标识，参数值
				switch ($line[0]){
					case "temp_name"://temp_name,模块名称
						$value_array["temp_name"] = $line[1];
						break;
					case "module_new_name"://module_new_name，中文标识
						$value_array["module_new_name"] = $line[1];
						break;
					case "module_content"://module_content，自定义模块内容
						$value_array["module_content"] = $line[1];
						break;
					case "module_type"://module_type，模块类型
						$value_array["module_type"] = $line[1];
						break;
				}
			}
//			print_r($this->getCookies('cursomize_module_content'));exit;
			if ($value_array["module_content"] == '') {
				$value_array["module_content"] = $this->getCookies('cursomize_module_content');
			}
			return $value_array;
		}
		return false;
	}
	
	/**
	 * 交换文件夹文件名
	 * @author workflow Develop Team    
	 * @param  $channel_name 频道ID
	 * @return bool
	 */
	function swap_file_name($channel_sign){
		$this->getlang("sys_common");
		$report = $this->_lang['langSysCChannelNameLostPleaseCheck']." ../html/".$channel_sign.$this->_lang['langSysCDown']."index.html,lock_index.html".$this->_lang['langSysCWhetherExist'];		
		//判断如果没有改文件，则创建
		if (!file_exists(BasePath."/html/".$channel_sign."/index.html") || !file_exists(BasePath."/html/".$channel_sign."/lock_index.html")){
			if (!file_exists(BasePath."/html/".$channel_sign."/index.html")){
				$fp = fopen(BasePath."/html/".$channel_sign."/index.html",'wb');
				fclose($fp);
			}
			if (!file_exists(BasePath."/html/".$channel_sign."/lock_index.html")){
				$fp = fopen(BasePath."/html/".$channel_sign."/lock_index.html",'wb');
				fclose($fp);
			}
		}else {
			if (!rename(BasePath."/html/".$channel_sign."/index.html",BasePath."/html/".$channel_sign."/lock_lock_index.html")){Common::outMessage("json",$report,0);}
			if (!rename(BasePath."/html/".$channel_sign."/lock_index.html",BasePath."/html/".$channel_sign."/index.html")){Common::outMessage("json",$report,0);}
			if (!rename(BasePath."/html/".$channel_sign."/lock_lock_index.html",BasePath."/html/".$channel_sign."/lock_index.html")){Common::outMessage("json",$report,0);}
		}
		return true;
	}
}


?>